package evemanutool.gui.manu.components;
import javax.swing.SwingConstants;
import evemanutool.data.database.Material;
import evemanutool.gui.general.tabel.SimpleTableModel;
@SuppressWarnings("serial")
public class MaterialModel extends SimpleTableModel<Material> implements SwingConstants {
public MaterialModel() {
super( new String[] {"Name", "Amount", "Manufacture", "Manufacture Cost/unit (ISK)", "Price/unit (ISK)", "Total Cost (ISK)"},
new int[] {LEFT, RIGHT, CENTER, RIGHT, RIGHT, RIGHT},
new int[] {2});
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return String.class;
case 2:
return Boolean.class;
case 1: case 3: case 4: case 5:
return Double.class;
default:
return Object.class;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return getColumnClass(columnIndex) == Boolean.class &&
dataList.get(rowIndex).canBeManufactured();
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//Set value to the underlying data.
if (getColumnClass(columnIndex) == Boolean.class) {
dataList.get(rowIndex).setProduced((Boolean) aValue);
//Update the cell.
fireTableCellUpdated(rowIndex, columnIndex);
}
}
@Override
public Object getValueAt(int row, int col) {
Material m = dataList.get(row);
switch (col) {
case 0:
return m.getItem().getName();
case 1:
return m.getAmount();
case 2:
return m.canBeManufactured() ? m.isProduced() : null; //Checkbox!
case 3:
return m.getManufactureQuote() == null ? null : m.getManufactureQuote().getManuCost();
case 4:
return m.getPrice();
case 5:
return m.isProduced() ? m.getManufactureQuote().getManuCost() * m.getAmount() :
m.getPrice() * m.getAmount();
default:
return null;
}
}
}